#ifndef _InputListener_H_
#define _InputListener_H_

//#include <CEGUI/CEGUI.h>
#include "Ogre.h"
//#include "OgreStringConverter.h"
//#include "OgreException.h"

#include "GameSystemManager.h"
//#include "GameSceneManager.h"

//Use this define to signify OIS will be used as a DLL
//(so that dll import/export macros are in effect)
#define OIS_DYNAMIC_LIB
#include <OIS/OIS.h>

using namespace Ogre;
using namespace OIS;

class InputListener : public FrameListener, public WindowEventListener, public OIS::KeyListener, public OIS::MouseListener
{
public:
	bool mShutdownRequested;
	bool bShowDebugOverlay;
	std::string mDebugText;

	
	static Camera* mCamera;
	static RenderWindow* mWindow;
	static Overlay* mDebugOverlay;
	static OIS::InputManager* mInputManager;
	static OIS::Mouse*    mMouse;
	static OIS::Keyboard* mKeyboard;
	static OIS::JoyStick* mJoy;
	

	InputListener();
	~InputListener();

	
	void updateStats(void);
	bool frameStarted(const FrameEvent&);
	bool frameEnded(const FrameEvent&);
	bool mouseMoved( const OIS::MouseEvent&);
	bool keyPressed( const OIS::KeyEvent&);
	virtual void windowResized(RenderWindow*);
	virtual void windowClosed(RenderWindow*);
	void showDebugOverlay(void);
	

};

#endif
